๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๊ณ ์ต์ ์น ๊ฐ๋ฐ์์ ์ฝ๋ ๋ช ํ์ฑ, ๋ณด์ ๋ฐ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ธ ์๋ฐ์คํฌ๋ฆฝํธ import attributes๋ฅผ ์ดํด๋ณด์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ Import Attributes: ์ต์ ๊ฐ๋ฐ์ ์ํ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ ์ดํดํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋์ ํ๋ ์น ๊ฐ๋ฐ์ ์ด์์ผ๋ก, ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋จ์๋ก ๊ตฌ์ฑํ์ฌ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ํฅ์์ํฌ ์ ์๊ฒ ํด์ค๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ํ๊ณ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ชจ๋ ์์คํ ์ ๊ฐํํ๊ธฐ ์ํ ์๋ก์ด ๊ธฐ๋ฅ๋ค์ด ๋์ ๋๊ณ ์์ต๋๋ค. ๊ทธ์ค ํ๋๊ฐ import attributes(์ด์ ์๋ import assertions๋ก ์๋ ค์ง)๋ก, ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ธ์จ ๋ชจ๋์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์๊ณผ ๋น๋ ๋๊ตฌ์ ์ ์ฉํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ ์ ์๋๋ก ํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ Import Attributes๋ ๋ฌด์์ธ๊ฐ?
Import attributes๋ import ๋ฌธ์ ํค-๊ฐ ์์ ์ฐ๊ฒฐํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์์ฑ(attributes)์ด๋ผ๊ณ ์๋ ค์ง ์ด ํค-๊ฐ ์์ ๊ฐ์ ธ์ค๋ ๋ชจ๋์ ํ์ ์ด๋ ์์ ํ์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์์ ์ ์๋๋ฅผ ๋ ๋ช ํํ๊ฒ ํํํ ์ ์์ผ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ ๋น๋ ๋๊ตฌ๊ฐ ๋ชจ๋์ ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ JSON, CSS ๋๋ ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ํ์ ๊ณผ ๊ฐ์ ๋น-์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋์ ๋ค๋ฃฐ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
์ญ์ฌ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋์ ํ์ ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ํด๋ฆฌ์คํฑ(heuristics)์ ์์กดํ๋๋ฐ, ์ด๋ ์ ๋ขฐํ ์ ์๊ณ ์๊ธฐ์น ์์ ๋์์ ์ ๋ฐํ ์ ์์์ต๋๋ค. Import attributes๋ ๋ช ์์ ์ธ ํ์ ์ ๋ณด๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
Import Attributes์ ๊ตฌ๋ฌธ
Import attributes์ ๊ตฌ๋ฌธ์ ๊ฐ๋จํฉ๋๋ค.with
ํค์๋์ ์์ฑ์ ํฌํจํ๋ JSON๊ณผ ์ ์ฌํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ import ๋ฌธ์ ์ถ๊ฐ๋ฉ๋๋ค.
import data from './data.json' with { type: 'json' };
import styles from './styles.css' with { type: 'css' };
์ ์์ ์์ ์ฒซ ๋ฒ์งธ import ๋ฌธ์ data.json
์ JSON ๋ชจ๋๋ก ์ทจ๊ธํด์ผ ํจ์ ์ง์ ํ๊ณ , ๋ ๋ฒ์งธ๋ styles.css
๊ฐ CSS ๋ชจ๋์์ ๋ํ๋
๋๋ค. type
์์ฑ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ด์ง๋ง, ํน์ ํ๊ฒฝ์์๋ ์ฌ์ฉ์ ์ ์ ์์ฑ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Import Attributes์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก
1. JSON ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก ์ค ํ๋๋ JSON ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ง์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. Import attributes๊ฐ ์์ผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ์ผ์ด JSON์์ ๊ฒฐ์ ํ๊ธฐ ์ํด ํด๋ฆฌ์คํฑ(์: ํ์ผ ํ์ฅ์ ํ์ธ)์ ์์กดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. Import attributes๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํ์ฌ ์๋๋ฅผ ๋ช ํํ ํ๊ณ ์ ๋ขฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
import config from './config.json' with { type: 'json' };
console.log(config.apiUrl);
์ด๋ฅผ ํตํด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ config.json
ํ์ผ์ JSON์ผ๋ก ํ์ฑํ๊ณ ๊ทธ ๋ด์ฉ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ก ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
2. CSS ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
๋ ๋ค๋ฅธ ์ ์ฉํ ์์ฉ ๋ถ์ผ๋ CSS ๋ชจ๋์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค. CSS ๋ชจ๋์ ์ข ์ข Webpack์ด๋ Parcel๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ์ ์ํด ์ฒ๋ฆฌ๋์ง๋ง, import attributes๋ CSS ํ์ผ์ด CSS ๋ชจ๋๋ก ์ทจ๊ธ๋์ด์ผ ํจ์ ๋ํ๋ด๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ CSS๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํ๋ฉฐ, CSS ๋ชจ๋์ ์ค์ฝํ(scoping)์ด๋ ๋ค๋ฅธ ๊ณ ๊ธ ์ฒ๋ฆฌ ๊ธฐ์ ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํ์ฑํํ ์ ์์ต๋๋ค.
import styles from './styles.module.css' with { type: 'css' };
// Use the styles object to apply CSS classes
document.body.classList.add(styles.container);
3. ํ ์คํธ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
Import attributes๋ ์ผ๋ฐ ํ
์คํธ ํ์ผ์ ๊ฐ์ ธ์ค๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. type
์ 'text'
๋ก ์ง์ ํ๋ฉด ํ์ผ ๋ด์ฉ์ด ๋ฌธ์์ด๋ก ๋ก๋๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ์ค์ ํ์ผ, ํ
ํ๋ฆฟ ๋๋ ๊ธฐํ ํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
import template from './template.txt' with { type: 'text' };
// Use the template string to render content
document.getElementById('content').innerHTML = template;
4. ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ํ์
ํ์ค ํ์ผ ํ์ ์ธ์๋, import attributes๋ ํน์ ํ๊ฒฝ์ด๋ ํ๋ ์์ํฌ๋ฅผ ์ํ ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ํ์ ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ ์์ํฌ๋ ์ปดํฌ๋ํธ ์ ์๋ ๋ฐ์ดํฐ ์คํค๋ง๋ฅผ ํฌํจํ๋ ๋ชจ๋์ ์๋ณํ๊ธฐ ์ํด import attributes๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ๋ ์์ํฌ๋ ์ด๋ฌํ ๋ชจ๋์ ์ ์ ํ๊ฒ ๋ก๋ํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
import component from './my-component.js' with { type: 'component' };
// The framework can then handle the component module in a specific way
framework.registerComponent(component);
Import Attributes ์ฌ์ฉ์ ์ด์
1. ์ฝ๋ ๋ช ํ์ฑ ํฅ์
Import attributes๋ ์ฝ๋๋ฅผ ๋ ๋ช ์์ ์ด๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. Import ๋ฌธ์์ ์ง์ ๋ชจ๋ ํ์ ์ ์ง์ ํจ์ผ๋ก์จ ๋ชจํธ์ฑ์ ์ ๊ฑฐํ๊ณ ๋ชจ๋์ด ์ด๋ป๊ฒ ํด์๋์ด์ผ ํ๋์ง๋ฅผ ๋ช ํํ๊ฒ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ์ ธ์จ ๋ชจ๋์ ๋ชฉ์ ๊ณผ ํ์์ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์์ผ๋ฏ๋ก ์ฝ๋๋ฒ ์ด์ค์ ์ ๋ฐ์ ์ธ ์ ์ง๋ณด์์ฑ์ด ํฅ์๋ฉ๋๋ค.
2. ๋ณด์ ๊ฐํ
๋ชจ๋์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํจ์ผ๋ก์จ import attributes๋ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ฐฉํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋์ด JSON์ผ๋ก ์์๋์์ง๋ง ์ค์ ๋ก๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ธ ๊ฒฝ์ฐ, import attributes๋ ํด๋น ์ฝ๋์ ์คํ์ ๋ง์ ์ ์ฌ์ ์ธ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๊ณต๊ฒฉ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ ํ์ฌ ๋ชจ๋์ด๋ ์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ ๋ฅผ ๋ค๋ฃฐ ๋ ํนํ ์ค์ํฉ๋๋ค.
3. ์ฑ๋ฅ ํฅ์
Import attributes๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ชจ๋์ ๋ํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๊ณตํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์์ง์ ๋ชจ๋์ ๋ก๋ฉ ๋ฐ ํ์ฑ์ ์ต์ ํํ์ฌ ์์ ์๊ฐ์ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋์ด JSON์์ ์๋ฉด ์์ง์ ์ ๋ฌธ JSON ํ์๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ฑํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฆ ๋๋ค.
4. ๋น๋ ๋๊ตฌ์์ ์ํธ์ด์ฉ์ฑ
Import attributes๋ Webpack, Parcel, Rollup๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ๊ฐ ๋ค์ํ ๋ชจ๋ ํ์ ์ ์ฒ๋ฆฌํ ์ ์๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. Import attributes๋ฅผ ์ฌ์ฉํ๋ฉด ํน์ ๊ตฌ์ฑ์ด๋ ์ฌ์ฉ๋ ํ๋ฌ๊ทธ์ธ์ ๊ด๊ณ์์ด ์ด๋ฌํ ๋๊ตฌ์ ์ํด ๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ๋ค์ํ ํ๊ฒฝ์์ ์ฝ๋์ ์ํธ์ด์ฉ์ฑ๊ณผ ์ด์์ฑ์ ํฅ์์ํต๋๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฐ ํด๋ฆฌํ
๋น๊ต์ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ฏ๋ก import attributes๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋์ง ์์ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ํธํ์ฑ ํ๋ฅผ ํ์ธํ๊ณ ์ด์ ๋ฒ์ ์ ๋ธ๋ผ์ฐ์ ์์ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ํด๋ฆฌํ(polyfill) ์ฌ์ฉ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํด๋ฆฌํ์ ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํจ์นํ๊ฑฐ๋ ๋์ฒด ๊ตฌํ์ ์ฌ์ฉํ์ฌ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ต์ ์ ๋ณด๋ Can I use์ ๊ฐ์ ์น์ฌ์ดํธ์์ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ง์ ํํฉ์ ํ์ธํ ์ ์์ต๋๋ค.
Import Attributes vs. ๋์ ์ํฌํธ
๋ฐํ์์ ๋ชจ๋์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ ์ ์๊ฒ ํด์ฃผ๋ ๋์ ์ํฌํธ(dynamic imports)์ import attributes๋ฅผ ๊ตฌ๋ณํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ ๊ธฐ๋ฅ ๋ชจ๋ ๋ชจ๋ ์์คํ ์ ํฅ์์ํค์ง๋ง, ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋์ ์ํฌํธ๋ ์ฃผ๋ก ์ฝ๋ ๋ถํ ๋ฐ ์ง์ฐ ๋ก๋ฉ(lazy loading)์ ์ฌ์ฉ๋๋ ๋ฐ๋ฉด, import attributes๋ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋์ ์ํฌํธ์ ํจ๊ป import attributes๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก ๋ก๋๋ ๋ชจ๋์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์๋ ์์ต๋๋ค:
async function loadData(url) {
const module = await import(url, { assert: { type: 'json' } });
return module.default;
}
๋์ ์ํฌํธ์์๋ with
๋์ assert
๊ฐ ์ฌ์ฉ๋ ์ ์ ์ ์ํ์ธ์. assert
ํค์๋๋ ์์ฑ์ด ํ์์ด๋ฉฐ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ์ํฌํธ๊ฐ ์คํจํด์ผ ํจ์ ์๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐ์ ์ ๋ฐ์ ์ค์ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
1. ์ด์ปค๋จธ์ค ํ๋ซํผ (๊ธ๋ก๋ฒ ์จ๋ผ์ธ ์๋งค)
๊ธ๋ก๋ฒ ๊ณ ๊ฐ์ ๋์์ผ๋ก ํ๋ ์ด์ปค๋จธ์ค ํ๋ซํผ์ import attributes๋ฅผ ํ์ฉํ์ฌ ํ์งํ๋ ์ ํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ฐ ๋ก์ผ์ผ(์: `en-US`, `fr-CA`, `ja-JP`)์ ์ ํ ์ค๋ช , ๊ฐ๊ฒฉ, ์ฌ๊ณ ์ ๋ณด๋ฅผ ํฌํจํ๋ ์์ฒด JSON ํ์ผ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. Import attributes๋ ๊ฐ ๋ก์ผ์ผ์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ํ์์ด ๋ก๋๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
// Dynamically load product data based on locale
async function loadProductData(locale) {
const productData = await import(`./data/products-${locale}.json`, { assert: { type: 'json' } });
return productData.default;
}
// Example usage:
loadProductData('fr-CA').then(data => {
console.log('French Canadian Product Data:', data);
});
2. ๋ด์ค ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ (๊ตญ์ ์ ๋๋ฆฌ์ฆ)
๋ด์ค ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ๋ ๋ค์ํ ์ถ์ฒ๋ก๋ถํฐ ์ข ์ข ๋ค๋ฅธ ํ์์ ๊ธฐ์ฌ๋ฅผ ์์งํฉ๋๋ค. Import attributes๋ ๋ด์ค ์ฝํ ์ธ ๋ฅผ ํฌํจํ๋ ํ ์คํธ ํ์ผ์ด ์ถ์ฒ์ ์ธ์ฝ๋ฉ์ด๋ ํ์ ๊ท์น์ ๊ด๊ณ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ํ์ ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ด์ค ์ถ์ฒ์ ๋ํ ํน์ ์ฒ๋ฆฌ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค.
// Import a news article from a specific source
import article from './articles/source-a.txt' with { type: 'text', source: 'Source A' };
// Process the article content
const processedArticle = processArticle(article, 'Source A');
3. ๊ธ์ต ๋์๋ณด๋ (๋ค๊ตญ์ ๊ธฐ์ )
๋ค๊ตญ์ ๊ธฐ์ ์์ ์ฌ์ฉํ๋ ๊ธ์ต ๋์๋ณด๋๋ ๋ฐ์ดํฐ ์์ค์ ๋ฐ๋ผ ๋ค์ํ ํ์(JSON, XML, YAML)์ ์ค์ ํ์ผ์ ๋ก๋ํด์ผ ํ ์ ์์ต๋๋ค. Import attributes๋ ๊ฐ ํ์ผ ํ์ ์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ํ์๋ฅผ ์ง์ ํ์ฌ ํ์์ ๊ด๊ณ์์ด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋๋๊ณ ํ์๋๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค.
// Load configuration files based on type
async function loadConfig(file, type) {
const config = await import(file, { assert: { type: type } });
return config.default;
}
// Example usage:
loadConfig('./config.json', 'json').then(config => {
console.log('JSON Config:', config);
});
loadConfig('./config.yaml', 'yaml').then(config => {
console.log('YAML Config:', config);
});
4. ๊ต์ก ํ๋ซํผ (๊ธ๋ก๋ฒ ํ์ต)
๋ค์ํ ์ธ์ด์ ํ์(ํ ์คํธ, ์ค๋์ค, ๋น๋์ค)์ผ๋ก ๊ฐ์ข๋ฅผ ์ ๊ณตํ๋ ๊ต์ก ํ๋ซํผ์ import attributes๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ข ์๋ฃ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ ์คํธ ๊ธฐ๋ฐ ์์ ์ `type: 'text'`๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ํ ์ ์์ผ๋ฉฐ, ๊ฐ์ข ๊ตฌ์กฐ๋ฅผ ์ค๋ช ํ๋ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์ `type: 'json'`์ผ๋ก ๋ก๋ํ ์ ์์ต๋๋ค. ๋ํํ ์ฐ์ต ๋ฌธ์ ๋ ํ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ์ ์ ์ ๋ชจ๋ ํ์ ์ ์ ์ํ ์ ์์ต๋๋ค.
5. ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ (๊ตญ์ ํ์ )
์ฌ๋ฌ ํ ๋ง์ ๊ตฌ์ฑ์ ์ง์ํ๋ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ import attributes๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์์ ์ ํธ๋์ ๋ฐ๋ผ ์ ์ ํ ํ ๋ง ํ์ผ๊ณผ ์ค์ ์ ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ํต์ฌ ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ชจ์๊ณผ ๋์์ ์ฝ๊ฒ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค.
Import Attributes ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
1. type
์์ฑ์ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ๊ธฐ
๊ฐ๋ฅํ ๋๋ง๋ค type
์์ฑ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ์
์ ์ง์ ํ์ธ์. ์ด๋ ๊ฐ์ฅ ๋๋ฆฌ ์ง์๋๋ ์์ฑ์ด๋ฉฐ ๋ชจ๋์ ํ์์ ๊ฐ์ฅ ๋ช
ํํ๊ฒ ๋ํ๋
๋๋ค.
2. ์ฌ์ฉ์ ์ ์ ์์ฑ ๋ฌธ์ํํ๊ธฐ
์ฌ์ฉ์ ์ ์ ์์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๊ทธ ๋ชฉ์ ๊ณผ ์์ ๊ฐ์ ๋ฐ๋์ ๋ฌธ์ํํ์ธ์. ์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ์์ฑ์ด ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ์ดํดํ๊ณ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ํผํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
3. ๋์ฒด ๋ฉ์ปค๋์ฆ ์ ๊ณตํ๊ธฐ
Import attributes๋ฅผ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋์ฒด ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ธ์. ์ด๋ ํด๋ฆฌํ์ ์ฌ์ฉํ๊ฑฐ๋ ์ ํต์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ชจ๋์ ์๋์ผ๋ก ํ์ฑํ๋ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค.
4. ์ฒ ์ ํ๊ฒ ํ ์คํธํ๊ธฐ
ํญ์ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ํ๊ฒฝ์์ ์ฝ๋๋ฅผ ์ฒ ์ ํ๊ฒ ํ ์คํธํ์ฌ import attributes๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ์ธ์. ์ด๋ ์ฌ์ฉ์ ์ ์ ์์ฑ์ด๋ ๋ณต์กํ ๋ชจ๋ ํ์ ์ ์ฌ์ฉํ ๋ ํนํ ์ค์ํฉ๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ import attributes๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ ์ ๊ท์คํ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ ๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ ํ์คํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ์ฝ๋ ๋ช ํ์ฑ, ๋ณด์ ๋ฐ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. Import attributes๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํดํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ๋ฉฐ ์ํธ์ด์ฉ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. Import attributes์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ด ๊ณ์ ์ฆ๊ฐํจ์ ๋ฐ๋ผ, ์ด๋ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์์ ์ ์ ๋ ์ค์ํ ๋ถ๋ถ์ด ๋ ๊ฒ์ ๋๋ค. ํ๋ก์ ํธ์ ์ด๋ฅผ ๋์ ํ์ฌ ๊ทธ ์ด์ ์ ํ์ฉํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋์ ๋ฏธ๋๋ฅผ ์ค๋นํ๋ ๊ฒ์ ๊ณ ๋ คํด๋ณด์ธ์.
ํญ์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํ์ธํ๊ณ ํ์ํ ๊ฒฝ์ฐ ํด๋ฆฌํ์ ์ฌ์ฉํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ๋ชจ๋ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ ๊ธฐ๋ฅ์ ํนํ ๋ค์ํ ๋ชจ๋ ์์กด์ฑ์ ๊ฐ์ง ๋ณต์กํ ํ๋ก์ ํธ์์ ์ฝ๋์ ์ ๋ขฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ๊ฒ์ ๋๋ค.